{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a88330d1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征数组的形状：(178, 13)\n",
      "特征数组的形状：(178,)\n",
      "[[ 1.51861254 -0.56906261  0.26105088 ...  0.39346131  1.83381234\n",
      "   1.01300893]\n",
      " [ 0.24628963 -0.50234086 -0.90869274 ...  0.43875109  1.10735109\n",
      "   0.96524152]\n",
      " [ 0.19687903  0.05049647  1.22911457 ...  0.34817153  0.7860317\n",
      "   1.39514818]\n",
      " ...\n",
      " [ 0.33275817  1.88057869 -0.4246609  ... -1.64457872 -1.46320409\n",
      "   0.28057537]\n",
      " [ 0.20923168  0.26972507  0.01903496 ... -1.59928894 -1.37938164\n",
      "   0.29649784]\n",
      " [ 1.39508604  1.70900848  1.51146647 ... -1.55399916 -1.40732245\n",
      "  -0.59516041]]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "file = 'item4/wine-clean.data'\n",
    "names=['label','a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','a13']\n",
    "dataset=pd.read_csv(file,names=names)\n",
    "\n",
    "#数据切片\n",
    "data =dataset.iloc[range(0,178),range(1,14)]\n",
    "target =dataset.iloc[range(0,178),range(0,1)].values.reshape(1,178)[0]\n",
    "print(f'特征数组的形状：{data.shape}')\n",
    "print(f\"特征数组的形状：{target.shape}\")\n",
    "\n",
    "\n",
    "from sklearn import preprocessing\n",
    "cdata=preprocessing.StandardScaler().fit_transform(data)\n",
    "print(cdata)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "35c31d1a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 30340 (\\N{CJK UNIFIED IDEOGRAPH-7684}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 21462 (\\N{CJK UNIFIED IDEOGRAPH-53D6}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 20540 (\\N{CJK UNIFIED IDEOGRAPH-503C}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 39044 (\\N{CJK UNIFIED IDEOGRAPH-9884}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 27979 (\\N{CJK UNIFIED IDEOGRAPH-6D4B}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 35823 (\\N{CJK UNIFIED IDEOGRAPH-8BEF}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 24046 (\\N{CJK UNIFIED IDEOGRAPH-5DEE}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "/opt/miniconda3/envs/ml-course/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 29575 (\\N{CJK UNIFIED IDEOGRAPH-7387}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n",
      "findfont: Generic family 'sans-serif' not found because none of the following families were found: Simhei\n"
     ]
    },
    {
     "data": {
      "image/png": "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CQ4OVjw9PZXBgwcrBw8elFu0nTX0meTk5NT7395t27bJLt1ubvX35GaOXgLApCiK4pg4RkRERKQfnLhNREREZAZDEhEREZEZDElEREREZjAkEREREZnBkERERERkBkMSERERkRkMSURERERmMCQRERERmcGQRERERGQGQxIRGdaQIUMwbdo02WUQkU5xg1sicjqnT5/GmDFjzD7Xs2dPrFmzBhMnTsSBAwfMtlm/fj327duHV1991ezzjz32GKZOnWqrcolIEoYkInI6N27cQFRUFN5///06z/Xv3x8AcPz4cWRlZdV5/tFHH8WNGzdQWFiIadOm4dFHH631/Pbt27F582Y7VE1EjsbhNiJyGps3b4a/vz/+85//yC6FiHSAIYmInMLHH3+Mhx56CGvWrMFDDz0kuxwi0gGGJCIyvGXLliExMRGff/45Ro8eLbscItIJzkkiIkNbt24dLly4gG+//RZ9+/aVXQ4R6Qh7kojI0KKiotCqVSv885//hKIossshIh1hSCIiQ7vjjjuwbds2fP7553jmmWdkl0NEOsLhNiIyvM6dO2Pbtm0YMmQI3NzckJiYKLskItIBhiQicgpdunTBN998gyFDhuDs2bPw9fWVXRIRaRxDEhEZ1vbt22v9uWvXrrhw4QKOHj2K119/XU5RRKQbnJNEREREZAZ7kojI6Xh7e+PQoUOIjY2t81yPHj0AiF4nc8+rr2/dujXmz5+PJUuW1Hn+5q1KiEifTArviSUiIiKqg8NtRERERGYwJBERERGZwZBEREREZAZDEhEREZEZDElEREREZjAkEREREZnBkERERERkxv8H2eDLARt4BWQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查找最优k值\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.neighbors import KNeighborsClassifier \n",
    "from sklearn.model_selection import train_test_split \n",
    "from sklearn.model_selection import cross_val_score\t\n",
    "x,y=cdata,target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0) \n",
    "\n",
    "# 定义k值选值范围\n",
    "k_range=range(1,15)\t\n",
    "k_error=[]\t\n",
    "for k in k_range:\n",
    "   model=KNeighborsClassifier(n_neighbors=k)\n",
    "   scores=cross_val_score(model,x,y,cv=5,scoring='accuracy')\n",
    "   k_error.append(1-scores.mean())\n",
    "\n",
    "# 绘制图版得到最优的k值\n",
    "plt.rcParams['font.sans-serif']='Simhei'\n",
    "plt.plot(k_range,k_error,'r-')\n",
    "plt.xlabel('k的取值')\n",
    "plt.ylabel('预测误差率')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "52808cc1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集的预测标签：[1 3 2 1 2 1 1 3 2 2 3 3 1 2 3 2 1 1 3 1 2 1 1 2 2 2 2 2 2 3 1 1 2 1 1 1 3\n",
      " 2 2 3 1 1 2 2 2]\n",
      "测试集的真实标签：[1 3 2 1 2 2 1 3 2 2 3 3 1 2 3 2 1 1 2 1 2 1 1 2 2 2 2 2 2 3 1 1 2 1 1 1 3\n",
      " 2 2 3 1 1 2 2 2]\n",
      "模型预测准确率：0.9555555555555556\n"
     ]
    }
   ],
   "source": [
    "#使用k值等于9来进行训练模型并评估\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "model=KNeighborsClassifier(n_neighbors=9)\n",
    "model.fit(x_train,y_train)\n",
    "\n",
    "# 预测应该只传入特征矩阵，这里使用测试集 x_test\n",
    "pred = model.predict(x_test)\n",
    "\n",
    "print (f'测试集的预测标签：{pred}')\n",
    "print(f'测试集的真实标签：{y_test}')\n",
    "ac = accuracy_score(y_test, pred)\n",
    "print(f'模型预测准确率：{ac}')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ml-course",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
